#include"game.h"


/**
 * @brief TCP接收线程
 * 
 * @param arg 
 * @return void* 
 */
void* tcp_recv(void* arg)
{
    XPRINTF("%s 1\n",__FUNCTION__);//显示当前的函数,__FUNCTION__是编译器预定义的宏 
    char emptyBuf[40][40] = {0};//这个数据是用来干啥的？？？？
    while (1)
    {
        XPRINTF("%s 2\n",__FUNCTION__);//不懂为什么还要在这里显示？？？
        
		//清空接收结构体
        tcp_server_data recv_data;
        bzero(&recv_data,sizeof(tcp_server_data));
        if(recv(*(int*)arg,&recv_data,sizeof(recv_data),0)==0) //判断服务器是否在线
        {
            printf("客户端与服务器链接断开\n");
            break;
        }
        XPRINTF("%s 3\n",__FUNCTION__);

        //recvfrom(udp_socketFd,recv_per_unit,sizeof(recv_per_unit),0,(struct sockaddr*)&udp_serverAddr,&len);
       
        //判断该客户端游戏是否结束
        if(recv_data.command==EXIT_GAME || gameOver==1)
        {
            shutdown(socketFd,2);//这个函数在哪里定义的？？？
            char tips[256] = {0};  sprintf(tips,"该局得分为:%d",recv_data.score);
            char endOfGame[256] = "游戏结束";
            
			ChineseTips(endOfGame,520,140,220,30);//这个函数在哪里定义的？？？
            ChineseTips(tips,520,200,200,30);//这个函数在哪里定义的？？？
            sleep(1);
            exit(0);
        }
        else
        {
            char score[256] = {0};
            sprintf(score,"当前得分:%d  MVP:%d",recv_data.score,recv_data.mvp);
            ChineseTips(score,520,140,200,80);
            if(memcmp(recv_data.map_arr,emptyBuf,sizeof(emptyBuf))==0)//recv_data.map_arr是啥？
            {
                continue;//上面判断的目的是什么？？？
            }
            //显示游戏画面
            game_display(recv_data.map_arr);//这个函数在哪里定义的？？？
        }
    }
}

/**
 * @brief 游戏画面显示
 * 
 * @param displayData 
 */
void game_display(char displayData[40][40])
{
    int display_buf[480*480] = {0};
    
    //将地图上密钥数据赋值为对应图片数据
    for(int x=0; x<480; x++)
    {
        for(int y=0; y<480; y++)
        {
            int m = displayData[x/12][y/12];//得到应该显示的图片的序号
            int n = (x%12)*12+(y%12);//得到当前图片中的坐标

            display_buf[i*480+j] = pic_arr[m][n];
			//pic_arr这个数组是什么含义？在哪里定义的？？char displayData[40][40]有什么用？？
			//第一维度——[displayData[i/12][j/12]]是什么意思？？？
			//第二维度——[(i%12)*12+j%12]是什么意思
        }
    }
    //显示图片
    displayPic(DISPLAY_ALL,NULL,display_buf,0,0,480,480);
}